// 问题：vue是如何做到vm.props访问到vm._data.props的

// 当有一个对象o1 = {name: 'abc'}，那么如何通过o2.name的时候访问到o1.name的值
let o1 = {name: 'abc'}
let o2 = {}
Object.defineProperty(o2, 'name', {
    get () {
        return o1.name
    },
    set (newValue)  {
        if (o1.name == newValue) {
            return
        }
        o1.name = newValue
    }
})
console.log(o2.name) // abc

// 如何通过访问一个对象的属性xx的时候访问到另一个对象的xx的值？
function proxy (target, props, key) {
    Object.defineProperty(target, key, {
        get () {
            return target[props][key]
        },
        set (newValue) {
            target[props][key] = newValue
        }
    })
}
let app = {
    _data: {
        name: 200
    },
}
proxy(app, '_data', 'name')
